package top.infopub.enums.mkt;

import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public enum ProProcessDetailTypeEnum {
    PRO_NODE_TYPE("0", "-1", "项目终止", "终止项目跟踪"),
    PRO_NODE_TYPE0("1", "0", "跟踪阶段", "项目信息收集"),
    PRO_NODE_TYPE1("1", "1", "跟踪阶段", "预立项"),
    PRO_NODE_TYPE2("2", "2", "立项阶段", "立项"),
    PRO_NODE_TYPE3("2", "3", "立项阶段", "营销策划"),
    PRO_NODE_TYPE4("3", "4", "资审阶段", "资格预审"),
    PRO_NODE_TYPE5("4", "5", "投标阶段", "招标文件分析"),
    PRO_NODE_TYPE6("4", "6", "投标阶段", "标书策划"),
    PRO_NODE_TYPE7("4", "7", "投标阶段", "投标决策"),
    PRO_NODE_TYPE8("4", "8", "投标阶段", "投标保证金"),
    PRO_NODE_TYPE9("4", "9", "投标阶段", "标书评审-商务标"),
    PRO_NODE_TYPE10("5", "10", "开标阶段", "开标结果"),
    PRO_NODE_TYPE11("5", "11", "开标阶段", "标后总结"),
    PRO_NODE_TYPE12("5", "12", "开标阶段", "项目交底"),
    PRO_NODE_TYPE13("5", "13", "开标阶段", "投标补贴"),
    PRO_NODE_TYPE14("4", "14", "投标阶段", "回收投标保证金"),//回收投标保证金-其他方式
    PRO_NODE_TYPE15("4", "15", "投标阶段", "标书评审-资信标"),
    PRO_NODE_TYPE16("4", "16", "投标阶段", "标书评审-技术标"),
    PRO_NODE_TYPE17("4", "17", "投标阶段", "回收投标保证金"),//回收投标保证金-现金方式
    PRO_NODE_TYPE18("1", "18", "跟踪阶段", "项目跟踪"),
    PRO_NODE_TYPE19("5", "19", "开标阶段", "营销奖励申请"),
    PRO_NODE_TYPE20("4", "20", "投标阶段", "回收保证金"),//回收保证金财务信息审批流程
    PRO_NODE_TYPE21("4", "21", "投标阶段", "资格预审"),//资格预审未通过资审流程
    PRO_NODE_TYPE22("4", "22", "投标阶段", "投标决策")//投标决策是否决策为否
    ;

    private String type;

    private String node;

    private String typeName;

    private String nodeName;

    ProProcessDetailTypeEnum(String type, String node, String typeName, String nodeName) {
        this.type = type;
        this.node = node;
        this.typeName = typeName;
        this.nodeName = nodeName;
    }

    public static ProProcessDetailTypeEnum getByNode(String node) {
        if (StringUtils.isBlank(node)) return null;
        for (ProProcessDetailTypeEnum ppdt : ProProcessDetailTypeEnum.values()) {
            if (StringUtils.equals(node, ppdt.getNode())) {
                return ppdt;
            }
        }
        return null;
    }

    public static List<Map<String, String>> asList() {
        List<Map<String, String>> list = new ArrayList<>();
        Map<String, String> map;
        for (ProProcessDetailTypeEnum pce : ProProcessDetailTypeEnum.values()) {
            map = new HashMap<>();
            map.put("type", pce.getType());
            map.put("node", pce.getNode());
            map.put("typeName", pce.getTypeName());
            map.put("nodeName", pce.getNodeName());
            list.add(map);
        }
        return list;
    }

    public static ProProcessDetailTypeEnum getByType(String type) {
        if (StringUtils.isBlank(type)) return null;
        for (ProProcessDetailTypeEnum ppdt : ProProcessDetailTypeEnum.values()) {
            if (StringUtils.equals(type, ppdt.getType())) {
                return ppdt;
            }
        }
        return null;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getNode() {
        return node;
    }

    public void setNode(String node) {
        this.node = node;
    }

    public String getTypeName() {
        return typeName;
    }

    public void setTypeName(String typeName) {
        this.typeName = typeName;
    }

    public String getNodeName() {
        return nodeName;
    }

    public void setNodeName(String nodeName) {
        this.nodeName = nodeName;
    }
}
